SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


CREATE PROCEDURE [dbo].[SP_TASALD_EMPR_Q27]        
/*-------------------------------------------------------------------------*/                  
/*----- Empresa           : OFISIS S.A.                                ----*/                  
/*----- Cliente           : OFISIS S.A.                                 ----*/                  
/*----- Sistema           : Contabilidad                               ----*/                  
/*----- Modulo            : Empresa                                    ----*/                  
/*----- Programa          : Reporte Inventarios y Balances(DET - DOCU) ----*/            
/*----- Nombre            : SP_TASALD_EMPR_Q27                         ----*/                  
/*----- Script            : TASALD_EMPR                                ----*/                  
/*----- Desarrollado por  : Percy Garc?a                               ----*/                  
/*----- Fecha             : 02/02/2004                                 ----*/                  
/*----- Base de Datos     : SQL 2000                                   ----*/                  
/*----- Version BD        :                                            ----*/                  
/*-------------------------------------------------------------------------*/              
/*-------------------------------------------------------------------------*/          
/*----- Modificado 1 por : LMGP                                       -----*/          
/*----- Fecha Modifica   : 12/08/2004                                 -----*/          
/*----- Detalle Modifica : Reporte Con Filtro de Unidad               -----*/          
/*-------------------------------------------------------------------------*/             
/*-------------------------------------------------------------------------*/          
/*----- Modificado 2 por : PDGV                                       -----*/          
/*----- Fecha Modifica   : 13/01/2005                                 -----*/          
/*----- Detalle Modifica : SE AUMENTO STATUS APR PARA SACAR ASTOS     -----*/          
-- CASO CTAS DE ORDEN----SI ES DEUDOR > 0 SE SUMA AL ACTIVO    
-- CASO CTAS DE ORDEN----SI ES ACREEDOR < 0 SE SUMA AL PASIVO    
-- AL SACAR LA MONEDA DE LA CONTABILIDAD FALTABA JOIN CON NUMERO DE CONTABILIDAD    
-- SE COMENTO EL SELECT QUE OBTIENE VSCO_CNTA_TEMP (NO LO UTILIZA)     
/*-------------------------------------------------------------------------*/          
/*-------------------------------------------------------------------------*/                   
/*----- Drop proc SP_TASALD_EMPR_Q27                                   ----*/                  
/*----- Grant Execute on SP_TASALD_EMPR_Q27 to PUBLIC                  ----*/                  
/*----- SP_TASALD_EMPR_Q27 '01', 1, '001', 2005, 1, 'R', 'D'                       ----*/                  
/*-------------------------------------------------------------------------*/                  
                  
 @ISCO_EMPR       TD_VC_002,                  
 @INNU_CNTB_EMPR  TD_IN_001,               
 @ISCO_UNID_CNTB  TD_VC_003,             
 @INNU_ANNO       TD_IN_004_ANNO,                  
 @INNU_MESE       TD_IN_002_MESE,                  
 @ISTI_REPO       TD_VC_001,           
 @ISTI_INFO       TD_VC_001            
 
 As
-- Declaro Variables de Trabajo                  
 Begin                   
 Declare                  
 @VSCO_CNTA_EMPR     TD_VC_020_CNTA,                  
 @VSCO_CNTA_0002     TD_VC_020_CNTA,                  
 @VSCO_CNTA_0003     TD_VC_020_CNTA,                  
 @CSCO_CNTA_QUIE     TD_VC_020_CNTA,                  
 @CSCO_CNTA_0003     TD_VC_020_CNTA,                  
 @CSCO_CNTA_EMPR     TD_VC_020_CNTA,               
 @VSCO_CNTA_TEMP     TD_VC_020_CNTA,               
 @CSDE_CNTA_EMPR     TD_VC_050,                  
 @CSDE_CNTA_0002     TD_VC_050,                  
 @CSDE_CNTA_0003     TD_VC_050,                  
 @CNIM_MVTO_SALD     TD_NU_016_004,                   
 @VNNU_QUIE_0002     TD_IN_001,     
 @VNNU_QUIE_0003     TD_IN_001,                  
 @VNNU_QUIE_MAXI     TD_IN_001,                  
 @VNIM_MVTO_ACTI     TD_NU_016_004,                   
 @VNIM_MVTO_PASI     TD_NU_016_004,                   
 @VNIM_MVTO_PATR     TD_NU_016_004,                   
 @VNIM_DEBE_0002     TD_NU_016_004,                   
 @VNIM_HABE_0002     TD_NU_016_004,                   
 @VNIM_DEBE_0003     TD_NU_016_004,                   
 @VNIM_HABE_0003     TD_NU_016_004,                   
 @VNIM_UTIL          TD_NU_016_004,                   
 @VSST_FLA1          TD_VC_001,                   
 @VSST_FLA2          TD_VC_001,                   
 @VSST_FLA3          TD_VC_001,                   
 @VSST_FLA4          TD_VC_001,                
 @VNFA_VNTA_CNTA     TD_NU_015_006,                
 @VNFA_CAMB_CNTA     TD_NU_015_006,                
 @VSCO_MONE_UNID     TD_VC_003,                
 @VSCO_MONE          TD_VC_003,                
 @VNIM_DETA_ORIG     TD_NU_016_004,                   
 @VNIM_DETA_CNTB     TD_NU_016_004,              
 @CSTI_CAMB          TD_VC_003,          
 @VSCA_WHER_LOCA     TD_VC_255,          
 @VNIM_CNTA_ORDE     TD_NU_016_004    
                
                  
-- TABLA TEMPORAL                   
 Create Table #TWSALD_EMPR_Q27_1                  
 (NU_QUIE_0001 Int NULL,                   
 NU_QUIE_0002  Int NULL,                   
 DE_QUIE_0002  Varchar(50) NULL,                   
 CO_CNTA_QUIE  Varchar(20) NULL,                   
 DE_CNTA_QUIE  Varchar(50) NULL,                   
 CO_CNTA_EMPR  Varchar(20) NULL,                   
 DE_CNTA_EMPR  Varchar(200) NULL,                   
 IM_MVTO_TOTA  Numeric(16, 4) NULL,                   
 DE_CNTA_0002  Varchar(50) NULL,                   
 DE_CNTA_0003  Varchar(50) NULL,                   
 CO_CNTA_0003  Varchar(20) NULL,                   
 ST_VISU_0003  Varchar(1) NULL,                   
 IM_DEBE       Numeric(16, 4) NULL,                   
 IM_HABE       Numeric(16, 4) NULL,                   
 IM_DEBE_0002  Numeric(16, 4) NULL,                   
 IM_HABE_0002  Numeric(16, 4) NULL,                   
 IM_DEBE_0003  Numeric(16, 4) NULL,                   
 IM_HABE_0003  Numeric(16, 4) NULL,                   
 TI_AUXI_EMPR  Varchar(1) NULL,                   
 CO_AUXI_EMPR  Varchar(20) NULL,                   
 NO_AUXI       Varchar(100) NULL,                   
 FE_DOCU       DateTime NULL,                   
 TI_DOCU       Varchar(3) NULL,                   
 NU_DOCU       Varchar(20) NULL,                   
 IM_DETA_ORIG  Numeric(16, 4) NULL,                   
 IM_DETA_CNTB  Numeric(16, 4) NULL,                   
 ST_VISU_DETA  Varchar(1) NULL,                  
 IM_TOTA_ACTI  Numeric(16, 4) NULL,                   
 IM_TOTA_PASI  Numeric(16, 4) NULL,                   
 IM_TOTA_PATR  Numeric(16, 4) NULL,                   
 CO_MONE       Varchar(3) NULL,                  
 IM_UTIL       Numeric(16, 4) NULL,                
 FA_CAMB       Numeric(15,6) NULL, -- FACTOR DE CAMBIO DE CIERRE                
 FE_VENC       DateTime NULL)  -- FECHA VENCIMIENTO                  
                  
  -- Para obtener el mayor y el menor nivel de quiebre de la tabla de Parametros                  
  Select @VNNU_QUIE_MAXI = NV_INFO_CNTA,                  
        @VNNU_QUIE_0002 = Convert(Int, SubString(NV_QUIE_CNTA, 1, 2)),                   
        @VNNU_QUIE_0003 = Convert(Int, SubString(NV_QUIE_CNTA, 3, 2))                   
  From TMPARA_CONT                  
  Where CO_EMPR =  @ISCO_EMPR                  
                  
If @ISTI_INFO = 'U'         
  Select @VSCA_WHER_LOCA = ' And T1.CO_UNID_CNTB = "' + @ISCO_UNID_CNTB + '" '          
Else         
  Select @VSCA_WHER_LOCA = ''        
    
-- OBTENGO LA MONEDA DE LA CONTABILIDAD              
  SELECT @VSCO_MONE_UNID = CO_MONE              
  FROM TTCNTB_EMPR              
  WHERE CO_EMPR = @ISCO_EMPR              
  And NU_CNTB_EMPR = @INNU_CNTB_EMPR    
         
 -- Declaro Cursor Acumulado                  
Exec('Declare CU_TASALD_EMPR_Q27_1 Cursor        
  For                   
  Select SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0002 + '),           
         SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0003 + '),           
         t1.CO_CNTA_EMPR, Max(t2.DE_CNTA_EMPR),                   
         Sum(t1.IM_CARG_CNTB) - Sum(t1.IM_ABON_CNTB),                   
         Max(t3.DE_CNTA_EMPR), Max(t4.DE_CNTA_EMPR), MAX(t2.ST_CNTA_CAMB), Max(t2.CO_MONE)              
  From TASALD_EMPR t1, TMPLAN_EMPR t2, TMPLAN_EMPR t3, TMPLAN_EMPR t4                  
  Where t1.CO_EMPR =  "' + @ISCO_EMPR + '"           
     And t1.NU_CNTB_EMPR = ' + @INNU_CNTB_EMPR + '          
     And t1.NU_ANNO = ' + @INNU_ANNO + '          
     And t1.NU_MESE <= ' + @INNU_MESE  +          
     @VSCA_WHER_LOCA + '           
     And DataLength(t1.CO_CNTA_EMPR) = ' + @VNNU_QUIE_MAXI + '          
     And SubString(t1.CO_CNTA_EMPR, 1, 2) < "60"          
     And t1.TI_AUXI_EMPR IS NULL                  
     And t1.CO_AUXI_EMPR IS NULL                  
     And t1.CO_ORDE_SERV IS NULL                  
     And t2.CO_EMPR = t1.CO_EMPR                  
     And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                  
     And t3.CO_EMPR = t1.CO_EMPR                  
     And t3.CO_CNTA_EMPR = SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0002 + ')           
     And t4.CO_EMPR = t1.CO_EMPR                  
     And t4.CO_CNTA_EMPR = SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0003 + ')                  
     Group by SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0002 + '), SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0003 + '), t1.CO_CNTA_EMPR           
     Order by 1, 2, 3 ')          
                  
-- Inicializo Variables                  
    Select @CSCO_CNTA_QUIE = NULL                   
    Select @CSCO_CNTA_EMPR = NULL                   
    Select @CSDE_CNTA_EMPR = NULL                   
    Select @CNIM_MVTO_SALD = NULL                   
    Select @VNNU_QUIE_MAXI = 0                   
    Select @VNNU_QUIE_0002 = 0                   
    Select @VNNU_QUIE_MAXI = 0                   
    Select @VNIM_MVTO_ACTI = 0                   
    Select @VNIM_MVTO_PASI = 0                   
    Select @VNIM_MVTO_PATR = 0                   
    Select @VNIM_UTIL      = 0       
    Select @VNIM_CNTA_ORDE = 0                           
    Select @VSST_FLA1      = 'S'                   
    Select @VSST_FLA2      = 'S'                   
    Select @VSST_FLA3      = 'S'                   
    Select @VSST_FLA4      = 'S'                   
                  
/*-- OPCION ACUMULADA --*/                  
  Open CU_TASALD_EMPR_Q27_1                   
  Fetch CU_TASALD_EMPR_Q27_1 Into @CSCO_CNTA_QUIE, @CSCO_CNTA_0003, @CSCO_CNTA_EMPR,                      
     @CSDE_CNTA_EMPR, @CNIM_MVTO_SALD, @CSDE_CNTA_0002, @CSDE_CNTA_0003,  @CSTI_CAMB, @VSCO_MONE                           
                  
  -- SETEO INICIAL                   
  Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                   
  Select @VSCO_CNTA_0003 = @CSCO_CNTA_0003                   
  Select @VNIM_DEBE_0002 = 0                   
  Select @VNIM_DEBE_0003 = 0                   
  Select @VNIM_HABE_0002 = 0                   
  Select @VNIM_CNTA_ORDE = 0                   
  Select @VSCO_CNTA_EMPR = ''                   
                
  While @@Fetch_status = 0                  
   Begin                   
                
  -- Inserto los Cuentas de Orden como quiebre 0                     
  /* -- INICIO CUENTAS DE ORDEN --*/                  
  If  SubString(@CSCO_CNTA_QUIE, 1, 1) = '0'                   
   Begin  ---- (A)                  
    Insert into #TWSALD_EMPR_Q27_1                  
     (
NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                   
      CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, ST_VISU_DETA)                  
     Values(1, 0, NULL,  @CSCO_CNTA_QUIE,  @CSCO_CNTA_EMPR, @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSCO_CNTA_0003, @CSDE_CNTA_0002, @CSDE_CNTA_0003, 'N', 'N')       
  -- ACTUALIZA IMPORTES A 2 DIGITOS                  
  If @CSCO_CNTA_QUIE = @VSCO_CNTA_0002                   
     Begin                   
     If (@CNIM_MVTO_SALD <> 0 )                   
        Begin                   
        Select @VNIM_DEBE_0002 = @VNIM_DEBE_0002 + @CNIM_MVTO_SALD                   
        Select @VNIM_CNTA_ORDE = @VNIM_CNTA_ORDE + @CNIM_MVTO_SALD                   
        End                  
     End            
  Else                   
     Begin                   
     Update #TWSALD_EMPR_Q27_1                   
     Set IM_DEBE_0002 = @VNIM_DEBE_0002,                   
     IM_HABE_0002 = NULL                   
     Where CO_CNTA_QUIE = @VSCO_CNTA_0002                  
                  
     Select @VNIM_DEBE_0002 = @CNIM_MVTO_SALD                   
     Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                   
     End                   
                  
  End                   
  /* -- FIN CUENTAS DE ORDEN --*/                  
                  
  -- Inserto los Activos como quiebre 1                     
                  
  /* -- INICIO CUENTAS DE ACTIVO --*/                  
  If SubString(@CSCO_CNTA_QUIE, 1, 1) > '0' And @CSCO_CNTA_QUIE < '40'                   
  Begin /* INICIO CTAS ACTIVO */                      
     -- ACTUALIZA ULTIMA CUENTA ORDEN                  
                  
     If @VSST_FLA1 = 'S'                  
     Begin                   
       Update #TWSALD_EMPR_Q27_1                   
       Set IM_DEBE_0002 = @VNIM_DEBE_0002,                   
       IM_HABE_0002 = NULL                   
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                  
     End                   
                  
    Insert Into #TWSALD_EMPR_Q27_1                  
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                   
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, ST_VISU_DETA)                  
    Values(1, 1, 'ACTIVO',  @CSCO_CNTA_QUIE,  @CSCO_CNTA_EMPR,                   
     @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSCO_CNTA_0003, @CSDE_CNTA_0002, @CSDE_CNTA_0003, 'N', 'N')                   
        
        
    -- Acumulo el total para los Activos                  
  If (@CNIM_MVTO_SALD  <> 0)                   
    Begin                   
     Select @VNIM_MVTO_ACTI =  @VNIM_MVTO_ACTI +  @CNIM_MVTO_SALD                   
    End                  
                  
    Select @VSCO_CNTA_EMPR = 'X'                   
    Select @VSCO_CNTA_EMPR = CO_CNTA_EMPR                   
    From TTCNTA_DOCU          
    Where CO_EMPR = @ISCO_EMPR                   
    And CO_CNTA_EMPR = @CSCO_CNTA_EMPR                   
            
  If @VSCO_CNTA_EMPR != 'X'                   
    Begin                
  Exec('          
    Insert into #TWSALD_EMPR_Q27_1                  
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003,          DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, FE_DOCU, FE_VENC, TI_DOCU, NU_DOCU,           
     CO_MONE, IM_DETA_ORIG, IM_DETA_CNTB, ST_VISU_DETA)                  
     Select 1, 1, "ACTIVO", "'+ @CSCO_CNTA_QUIE +'", "'+ @CSCO_CNTA_EMPR +'", NULL, NULL, "'+ @CSCO_CNTA_0003+'",           
     "'+ @CSDE_CNTA_0002 +'", "'+ @CSDE_CNTA_0003 +'", "N", t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, Max(t2.NO_AUXI),           
     Max(t1.FE_DOCU), Max(t1.FE_DOCU_VENC), t1.TI_DOCU, t1.NU_DOCU, Max(t1.CO_MONE),          
     IsNull( SUM
( ( ROUND( (FLOOR((ASCII(t1.TI_OPER)/67)) * t1.IM_MVTO_ORIG), 2))), 0) -           
     IsNull( SUM( ( ROUND( (FLOOR((65/ASCII(t1.TI_OPER))) * t1.IM_MVTO_ORIG), 2))), 0), 0.00, "S"           
     From TXMVTO_CNTB t1
	   Left Outer Join TMAUXI_EMPR t2 
	   On t2.CO_EMPR = t1.CO_EMPR           
       And t2.TI_AUXI_EMPR = t1.TI_AUXI_EMPR           
       And t2.CO_AUXI_EMPR = t1.CO_AUXI_EMPR
     Where t1.CO_EMPR = "'+ @ISCO_EMPR +'"          
     And t1.NU_CNTB_EMPR = '+ @INNU_CNTB_EMPR +          
     @VSCA_WHER_LOCA + ' 
     And t1.NU_ANNO = '+ @INNU_ANNO +'          
     And t1.NU_MESE <= '+ @INNU_MESE + '              
     And t1.CO_CNTA_EMPR = "' + @CSCO_CNTA_EMPR + '"          
     And t1.SI_MVTO_CNTB = "APR"        
     Group By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU           
     Having (IsNull( SUM( ( ROUND( (FLOOR((ASCII(t1.TI_OPER)/67)) * t1.IM_MVTO_ORIG), 2))), 0) -           
     IsNull( SUM( ( ROUND( (FLOOR((65/ASCII(t1.TI_OPER))) * t1.IM_MVTO_ORIG), 2))), 0)) <> 0 ')          
              
  End  --  /*--- FIN  If @VSCO_CNTA_EMPR != 'X' ---*/                  
      
  -- ACTUALIZA IMPORTES A 2 DIGITOS                  
  If @CSCO_CNTA_QUIE = @VSCO_CNTA_0002                   
     Begin                 
     If (@CNIM_MVTO_SALD <> 0)                   
  Begin                   
        Select @VNIM_DEBE_0002 = @VNIM_DEBE_0002 + @CNIM_MVTO_SALD                   
        End                   
     End                   
  Else                   
   Begin                   
     If @VSST_FLA1 = 'N'                   
     Begin                   
     Update #TWSALD_EMPR_Q27_1                   
     Set IM_DEBE_0002 = @VNIM_DEBE_0002,                   
     IM_HABE_0002 = NULL                   
     Where CO_CNTA_QUIE = @VSCO_CNTA_0002                  
     End                   
                  
     Select @VNIM_DEBE_0002 = @CNIM_MVTO_SALD                   
     Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                   
   End                  
                  
  Select @VSST_FLA1 = 'N'                   
            
  End   /* -- FIN CUENTAS DE ACTIVO --*/                  
                  
                  
  /* -- INICIO CUENTAS DE PASIVO --*/                  
                  
  -- Inserto los Pasivos como quiebre 2                  
  If  @CSCO_CNTA_QUIE > '39' and  @CSCO_CNTA_QUIE < '50'                   
  Begin              
   -- ACTUALIZA DEBE DE LA ULTIMA CUENTA DE ACTIVO                  
   If @VSST_FLA2 = 'S'                   
     Begin                   
     Update #TWSALD_EMPR_Q27_1                   
     Set IM_DEBE_0002 = @VNIM_DEBE_0002,                   
     IM_HABE_0002 = NULL                   
     Where CO_CNTA_QUIE = @VSCO_CNTA_0002                  
     End                   
                  
    Insert into #TWSALD_EMPR_Q27_1                  
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                   
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, ST_VISU_DETA)                  
    Values(2, 1, 'PASIVO',  @CSCO_CNTA_QUIE,  @CSCO_CNTA_EMPR,                   
    @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSCO_CNTA_0003, @CSDE_CNTA_0002, @CSDE_CNTA_0003, 'N','N')                   
                  
   -- Acumulo el total para los Pasivos                  
  If (@CNIM_MVTO_SALD  <> 0)                   
    Begin                   
      Select @VNIM_MVTO_PASI =  @VNIM_MVTO_PASI +  @CNIM_MVTO_SALD                   
    End                  
                 
    Select @VSCO_CNTA_EMPR = 'X'                   
    Select @VSCO_CNTA_EMPR = CO_CNTA_EMPR                   
    From TTCNTA_DOCU                   
    Where CO_EMPR = @ISCO_EMPR                   
    And CO_CNTA_EMPR = @CSCO_CNTA_EMPR                   
            
-- DETALLE DE LAS CUENTAS DE PASIVO            
 
 If @VSCO_CNTA_EMPR != 'X'                   
    Begin                
    Exec( 'Insert into #TWSALD_EMPR_Q27_1                  
     (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                   
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003,                   
     TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, FE_DOCU, FE_VENC, TI_DOCU, NU_DOCU, CO_MONE, IM_DETA_ORIG, IM_DETA_CNTB, ST_VISU_DETA)                  
     Select 2, 1, "PASIVO", "'+ @CSCO_CNTA_QUIE +'", "'+ @CSCO_CNTA_EMPR +'", NULL, NULL, "'+ @CSCO_CNTA_0003 +'",           
     "'+ @CSDE_CNTA_0002 +'", "'+ @CSDE_CNTA_0003 +'", "N", t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, Max(t2.NO_AUXI),           
     Max(t1.FE_DOCU), Max(t1.FE_DOCU_VENC), t1.TI_DOCU, t1.NU_DOCU, Max(t1.CO_MONE),                    
     IsNull( SUM( ( ROUND( (FLOOR((ASCII(t1.TI_OPER)/67)) * t1.IM_MVTO_ORIG), 2))), 0) -                    
     IsNull( SUM( ( ROUND( (FLOOR((65/ASCII(t1.TI_OPER))) * t1.IM_MVTO_ORIG), 2))), 0), 0.00, "S"          
     From TXMVTO_CNTB t1
	   Left Outer Join TMAUXI_EMPR t2 
	   On t2.CO_EMPR = t1.CO_EMPR                   
	   And t2.TI_AUXI_EMPR = t1.TI_AUXI_EMPR                   
       And t2.CO_AUXI_EMPR = t1.CO_AUXI_EMPR                  
     Where t1.CO_EMPR = "'+ @ISCO_EMPR +'"          
     And t1.NU_CNTB_EMPR = '+ @INNU_CNTB_EMPR +
     @VSCA_WHER_LOCA + '  
     And t1.NU_ANNO = '+ @INNU_ANNO +'          
     And t1.NU_MESE <= '+ @INNU_MESE +'          
     And t1.CO_CNTA_EMPR = "'+ @CSCO_CNTA_EMPR +'"  
     And t1.SI_MVTO_CNTB = "APR"        
     Group By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU                  
     Having (IsNull( SUM( ( ROUND( (FLOOR((ASCII(t1.TI_OPER)/67)) * t1.IM_MVTO_ORIG), 2))), 0) -                    
             IsNull( SUM( ( ROUND( (FLOOR((65/ASCII(t1.TI_OPER))) * t1.IM_MVTO_ORIG), 2))), 0)) <> 0 ')          
              
    End  --  /*--- FIN  If @VSCO_CNTA_EMPR != 'X' ---*/                  
                  
  -- ACTUALIZA IMPORTES A 2 DIGITOS                  
  If @CSCO_CNTA_QUIE = @VSCO_CNTA_0002                   
    Begin                   
     If (@CNIM_MVTO_SALD  <> 0)                   
       Begin                   
        Select @VNIM_HABE_0002 = @VNIM_HABE_0002 + @CNIM_MVTO_SALD                   
       End                   
    End                   
  Else                   
    Begin                   
     If @VSST_FLA2 = 'N'                   
     Begin                     
       Update #TWSALD_EMPR_Q27_1                   
       Set IM_DEBE_0002 = NULL,                   
       IM_HABE_0002 = @VNIM_HABE_0002                   
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                  
     End                  
     Select @VNIM_HABE_0002 = @CNIM_MVTO_SALD                   
     Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                   
    End                   
                  
  Select @VSST_FLA2 = 'N'                   
  End                   
                  
  /* -- FIN CUENTAS DE PASIVO --*/                  
                  
  /* -- INICIO CUENTAS DE PATRIMONIO --*/                  
                  
  -- Inserto el Patrimonio como quiebre 3                  
  If  @CSCO_CNTA_QUIE > '49'                   
    Begin                   
     Select @VSST_FLA4 = 'N'                   
                  
     -- ACTUALIZA HABER DE LA ULTIMA CUENTA PASIVO                  
     If @VSST_FLA3 = 'S'                   
     Begin                          
       Update #TWSALD_EMPR_Q27_1                   
       Set IM_DEBE_0002 = NULL,                   
       IM_HABE_0002 = @VNIM_HABE_0002                   
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                  
     End                   
                  
    Insert into #TWSALD_EMPR_Q27_1                  
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                   
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, ST_VISU_DETA)                  
    Values(3, 1, 'PATRIMONIO',  @CSCO_CNTA_QUIE,  @CSCO_CNTA_EMPR,                   
    @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSCO_CNTA_0003, @CSDE_CNTA_0002, @CSDE_CNTA_0003, 'N', 'N')                   
                  
   -- Acumulo el total para el Patrimonio                  
  If (@CNIM_MVTO_SALD  <> 0)                   
    Begin                   
      Select @VNIM_MVTO_PATR =  @VNIM_MVTO_PATR + @CNIM_MVTO_SALD                   
    End                  
                  
  -- ACTUALIZA IMPORTES A 2 DIGITOS                  
  If @CSCO_CNTA_QUIE = @VSCO_CNTA_0002                Begin     
     If (@CNIM_MVTO_SALD  <> 0)                   
       Begin                   
        Select @VNIM_HABE_0002 = @VNIM_HABE_0002 + @CNIM_MVTO_SALD                   
       End                   
   End                   
  Else                   
   Begin                   
    If @VSST_FLA3 = 'N'                   
      Begin                   
       Update #TWSALD_EMPR_Q27_1                   
       Set IM_DEBE_0002 = NULL,                   
       IM_HABE_0002 = @VNIM_HABE_0002                   
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                  
      End                  
     Select @VNIM_HABE_0002 = @CNIM_MVTO_SALD                   
     Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                   
    End                  
                  
  Select @VSST_FLA3 = 'N'                   
  End                  
                  
  /* -- FIN CUENTAS DE PATRIMONIO --*/                  
        If SubString(@CSCO_CNTA_EMPR,1, 2) = '59'                   
        Begin                   
  Select @VNIM_UTIL = @VNIM_UTIL + @CNIM_MVTO_SALD                   
        End                   
                
 -- OBTENGO LA MONEDA DE LA CUENTA              
/*   Select @VSCO_MONE = CO_MONE                
   from TMPLAN_ANNO    
   Where CO_EMPR = @ISCO_EMPR              
   And   CO_CNTA_EMPR = @CSCO_CNTA_EMPR                  */    
    
/*----------- Para obtener el factor de cierre ------*/                
--- SOLO SACA FACTOR DE CIERRE PARA CASO MONEDA CTA != MONEDA CNTB  
If @VSCO_MONE != @VSCO_MONE_UNID              
Begin   
IF @CSTI_CAMB = 'COM'              
  Begin   
  SELECT @VNFA_CAMB_CNTA = FA_CAMB_CMPR              
  FROM TCFACT_CIER                
  WHERE CO_MONE = @VSCO_MONE                
  AND NU_ANNO = @INNU_ANNO                
  AND NU_MESE = @INNU_MESE                
  End   
ELSE    
  Begin              
  SELECT @VNFA_CAMB_CNTA = FA_CAMB_VNTA              
  FROM TCFACT_CIER                
  WHERE CO_MONE = @VSCO_MONE                
  AND NU_ANNO = @INNU_ANNO                
  AND NU_MESE = @INNU_MESE                
  End   
            
-- PARA EL CASO DEL MES 0             
If @INNU_MESE  = 0            
 Begin            
 IF @CSTI_CAMB = 'COM'              
  Begin   
  SELECT @VNFA_CAMB_CNTA = FA_CAMB_CMPR              
  FROM TCFACT_CIER                
  WHERE CO_MONE = @VSCO_MONE                
  AND NU_ANNO = @INNU_ANNO - 1                
  AND NU_MESE = 12            
  End   
ELSE    
  Begin              
  SELECT @VNFA_CAMB_CNTA = FA_CAMB_VNTA              
  FROM TCFACT_CIER                
  WHERE CO_MONE = @VSCO_MONE                
  AND NU_ANNO = @INNU_ANNO - 1               
  AND NU_MESE = 12            
  End   
End     
End            
    
  UPDATE #TWSALD_EMPR_Q27_1                
  SET FA_CAMB = (Case When @VSCO_MONE != @VSCO_MONE_UNID Then @VNFA_CAMB_CNTA    
                 When @VSCO_MONE = @VSCO_MONE_UNID Then NULL    
                 Else NULL End ),                
  IM_DETA_CNTB = (Case When @VSCO_MONE != @VSCO_MONE_UNID Then     
                 DBO.FU_CONV_MONE(@VSCO_MONE, @VSCO_MONE_UNID,
 @CSTI_CAMB, @VNFA_CAMB_CNTA, IM_DETA_ORIG, @INNU_ANNO, @INNU_MESE )--FA_CAMB* IM_DETA_ORIG                
                 When @VSCO_MONE = @VSCO_MONE_UNID Then IM_DETA_ORIG    
                 Else NULL End)       
  WHERE CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
--  And ST_VISU_DETA = 'S'    
                   
     Fetch CU_TASALD_EMPR_Q27_1 Into @CSCO_CNTA_QUIE, @CSCO_CNTA_0003, @CSCO_CNTA_EMPR,                      
     @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSDE_CNTA_0002, @CSDE_CNTA_0003, @CSTI_CAMB, @VSCO_MONE                   
                  
--  End Loop                    
  End /*FIN WHILE*/                   
                  
                  
/*****************/                  
  If @VSST_FLA4 = 'N'                   
  Begin                   
  Update #TWSALD_EMPR_Q27_1                   
       Set IM_DEBE_0002 = NULL,                   
       IM_HABE_0002 = @VNIM_HABE_0002                   
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                  
  End                  
                  
  Close CU_TASALD_EMPR_Q27_1                   
  Deallocate CU_TASALD_EMPR_Q27_1                   
                  
--  End If  /*-- FIN ISTI_REPO = 'A' --*/                  

---- CASO SALDO DE LAS CUENTAS DE ORDEN ES DEUDOR (> 0) ENTONCES SE SUMA AL ACTIVO    
---- CASO SALDO DE LAS CUENTAS DE ORDEN ES ACREEDOR (< 0) ENTONCES SE SUMA AL PASIVO    
     
 If @VNIM_CNTA_ORDE > 0     
    Begin     
    Select @VNIM_MVTO_ACTI = @VNIM_MVTO_ACTI + @VNIM_CNTA_ORDE    
    End     
 If @VNIM_CNTA_ORDE < 0     
    Begin     
    Select @VNIM_MVTO_PASI = @VNIM_MVTO_PASI + @VNIM_CNTA_ORDE    
    End     
      
  Update #TWSALD_EMPR_Q27_1                  
  Set IM_TOTA_ACTI = @VNIM_MVTO_ACTI,                  
  IM_TOTA_PASI = @VNIM_MVTO_PASI,                  
  IM_TOTA_PATR = @VNIM_MVTO_PATR,                  
  IM_UTIL = @VNIM_UTIL                  
              
 -- QRP                   
 If @ISTI_REPO = 'R'                   
 Select t1.NU_QUIE_0001, t1.NU_QUIE_0002,                  
 t1.DE_QUIE_0002, t1.CO_CNTA_QUIE, t1.CO_CNTA_0003, t1.DE_CNTA_0002, t1.DE_CNTA_0003,                  
 t1.CO_CNTA_EMPR, t1.DE_CNTA_EMPR,                  
 t1.IM_MVTO_TOTA, ST_VISU_0003, t1.IM_DEBE_0002, t1.IM_HABE_0002, t1.IM_DEBE_0003, t1.IM_HABE_0003,                  
 t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.NO_AUXI, t1.FE_DOCU, t1.TI_DOCU, t1.NU_DOCU,                  
 t1.CO_MONE, t1.IM_DETA_ORIG, t1.IM_DETA_CNTB, t1.ST_VISU_DETA,                  
 t1.IM_TOTA_ACTI, t1.IM_TOTA_PASI, t1.IM_TOTA_PATR, t1.IM_UTIL, t1.FE_VENC,                 
 ROUND(t1.FA_CAMB,3)                
 From #TWSALD_EMPR_Q27_1 t1                  
 Where (t1.IM_MVTO_TOTA <> 0 Or t1.IM_MVTO_TOTA Is NULL)             
 Order by t1.DE_QUIE_0002, t1.CO_CNTA_QUIE,                   
 t1.CO_CNTA_0003, t1.CO_CNTA_EMPR, t1.NU_QUIE_0001, t1.NU_QUIE_0002,  t1.ST_VISU_DETA,                  
 t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.FE_DOCU, t1.TI_DOCU, t1.NU_DOCU                 
              
               
 -- TABLA                  
 If @ISTI_REPO = 'T'                   
 Select t1.DE_QUIE_0002 AS TITULO, t1.CO_CNTA_QUIE AS CUENTA_2DIGITOS, t1.CO_CNTA_0003 AS CUENTA_3DIGITOS,                  
 t1.DE_CNTA_0002 AS DESC_CUENTA_2DIGITOS, t1.DE_CNTA_0003 AS DESC_CUENTA_3DIGITOS,                  
 t1.CO_CNTA_EMPR AS CUENTA, t1.DE_CNTA_EMPR DES_CUENTA,                  
 t1.IM_MVTO_TOTA SALDO_CUENTA, t1.IM_DEBE_0002 AS DEBE_2DIGITOS, t1.IM_HABE_0002 AS HABER_2DIGITOS, t1.IM_DEBE_0003 AS DEBE_3DIGITOS, t1.IM_HABE_0003 AS HABER_3DIGITOS,                  
 t1.TI_AUXI_EMPR AS TIPO_AUXILIAR, t1.CO_AUXI_EMPR AS COD_AUXILIAR, t1.NO_AUXI NOMBRE_AUXILIAR, t1.FE_DOCU FECHA_DOCU, t1.FE_VENC FECHA_VENC, t1.TI_DOCU TIPO_DOCU, t1.NU_DOCU NUMERO_DOCU,                  
 t1.CO_MONE AS MONEDA, t1.IM_DETA_ORIG AS  IMPORTE_DETALLE_ORIGEN, t1.IM_DETA_CNTB AS IMPORTE_DETALLE_CONTABLE,                  
 t1.IM_TOTA_ACTI AS ACTIVO, t1.IM_TOTA_PASI AS PASIVO, t1.IM_TOTA_PATR AS PATRIMONIO, t1.IM_UTIL AS UTILIDAD,                
 t1.FA_CAMB AS FACTOR_CAMBIO                  
 From #TWSALD_EMPR_Q27_1 t1                  
 Where (t1.IM_MVTO_TOTA <> 0 Or t1.IM_MVTO_TOTA Is NULL)                  
 Order by t1.NU_QUIE_0001, t1.NU_QUIE_0002, t1.CO_CNTA_QUIE, t1.CO_CNTA_0003, t1.CO_CNTA_EMPR, t1.ST_VISU_DETA,                  
 t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.FE_DOCU, t1.TI_DOCU, t1.NU_DOCU                  
                  
End   -- FIN AS BEGIN                   
/*----------------------------- Fin ---------------------------------*/



GO
